SUMMARY:
This loads the value of whatever type (signed or unsigned) and whatever length (1, 2, or 4 bytes) from an address.
If the value isn't within the parameters you set, then it isn't stored.  Then it checks the next address.
If the value is within the parameters you set, the address and it's value are stored.  Then it checks the next address.
It will stop when it's either done scanning all addresses you specified, or it has the maximum amount of results.


200ffe8c 0c03ffc3 jal $000fff0c               Goes to the "Clear Results" function.
{
        OR 1 BYTE
200ffe90 25ad0001 addiu t5, t5, $0001         Go up 1, check next 1 byte.
        OR 2 BYTES
200ffe90 25ad0002 addiu t5, t5, $0002         Go up 2, check next 2 bytes.
        OR 4 BYTES
200ffe90 25ad0004 addiu t5, t5, $0004         Go up 4, check next 4 bytes.
}
200ffe94 118d000d beq t4, t5, $000ffecc       Finished, scanned all addresses.  It goes to the delay.
{
        OR 1 SIGNED BYTE
200ffe98 81ab0000 lb t3, $0000(t5)            Load the result's 1 signed byte to check.
        OR 1 UNSIGNED BYTE
200ffe98 91ab0000 lbu t3, $0000(t5)           Load the result's 1 unsigned byte to check.
        OR 2 SIGNED BYTES
200ffe98 85ab0000 lh t3, $0000(t5)            Load the result's 2 signed bytes to check.
        OR 2 UNSIGNED BYTES
200ffe98 95ab0000 lhu t3, $0000(t5)           Load the result's 2 unsigned bytes to check.
        OR 4 SIGNED BYTES
200ffe98 8dab0000 lw t3, $0000(t5)            Load the result's 4 signed bytes to check.
        OR 4 UNSIGNED BYTES
200ffe98 9dab0000 lwu t3, $0000(t5)           Load the result's 4 unsigned bytes to check.
}
{
        OR EXACT VALUE
100ffe9e 3c0avvvv lui t2, $vvvv               The exact value to check for.
100ffea2 354avvvv ori t2, t2, $vvvv           The exact value to check for.
200ffea4 154bfffa bne t2, t3, $000ffe90	    If the address's value isn't the same as vvvvvvvv, check the next result.
        OR NOT EQUAL VALUE
100ffe9e 3c0avvvv lui t2, $vvvv               The exact value to check for.
100ffea2 354avvvv ori t2, t2, $vvvv           The exact value to check for.
200ffea4 114bfffa beq t2, t3, $000ffe90	    If the address's value isn't different from vvvvvvvv, check the next result.
        OR LESS THAN VALUE
100ffe9e 3c0avvvv lui t2, $vvvv               Search for values that are smaller than this.
100ffea2 354avvvv ori t2, t2, $vvvv           Search for values that are smaller than this.
200ffea4 016a082a slt at, t3, t2              If the address's value is equal to or greater than vvvvvvvv, then "at" = 0 meaning it will check the next result.  If the address's value is less than vvvvvvvv, then "at" = 1 meaning this result will be saved.
200ffea8 1420fff9 beq at, zero, $000ffe90	    The above sentence explains it perfectly.
        OR GREATER THAN VALUE
100ffe9e 3c0avvvv lui t2, $vvvv               Search for values that are greater than this.
100ffea2 354avvvv ori t2, t2, $vvvv           Search for values that are greater than this.
200ffea4 014b082a slt at, t2, t3              If the address's value is equal to or less than vvvvvvvv, then "at" = 0 meaning it will check the next result.  If the address's value is greater than vvvvvvvv, then "at" = 1 meaning this result will be saved.
200ffea8 1420fff9 beq at, zero, $000ffe90	    The above sentence explains it perfectly.
        OR SPECIFY RANGE
100ffe9e 3c0avvvv lui t2, $vvvv               Search for values that are smaller than this.
100ffea2 354avvvv ori t2, t2, $vvvv           Search for values that are smaller than this.
200ffea4 016a082a slt at, t3, t2              If the address's value is equal to or greater than vvvvvvvv, then "at" = 0 meaning it will check the next result.  If the address's value is less than vvvvvvvv, then "at" = 1 meaning this result will be checked next to see if it's greater than another value.
200ffea8 1420fff9 beq at, zero, $000ffe90	    The above sentence explains it perfectly.
100ffeae 3c0avvvv lui t2, $vvvv               Search for values that are greater than this.
100ffeb2 354avvvv ori t2, t2, $vvvv           Search for values that are greater than this.
200ffeb4 014b082a slt at, t2, t3              If the address's value is equal to or less than vvvvvvvv, then "at" = 0 meaning it will check the next result.  If the address's value is greater than vvvvvvvv, then "at" = 1 meaning this result will be saved.
200ffeb8 1420fff5 beq at, zero, $000ffe90	    The above sentence explains it perfectly.
}
200ffebc aded0000 sw t5, $0000(t7)            Store the result's address.
200ffec0 adeb0004 sw t3, $0004(t7)            Store the result's value.
200ffec4 15cffff2 bne t6, t7, $000ffe90       Has it stored the maximum amount of results?  If it hasn't, it will check the next address's value.
200ffec8 25ef0008 addiu t7, t7, $0008         Add 8 so it can store the next result.

This has no jump return or jump and link because the delay code is immediately after it, and it does the "jr ra".